package cn.sc.summer.mybatis.util;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.sc.summer.constant.model.PageParam;
import cn.sc.summer.constant.model.PageResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 类名：page转换类
 *
 * @author a-xin
 * @date 2024/5/24 09:34
 */
@Slf4j
@Component
public class PageConvertUtil {

    /**
     * pageParam转换page
     *
     * @param form  pageParam表单
     * @param clazz 转换类型
     * @param <T>   page表单
     * @param <R>   返回类型
     * @return page类型
     */
    public static <T extends PageParam, R> Page<R> coverToPage(T form, Class<R> clazz) {
        Page<R> resultPage = new Page<>();
        resultPage.setCurrent(form.getCurrent());
        resultPage.setSize(form.getSize());
        return resultPage;
    }

    /**
     * page转pageResult
     *
     * @param page page数据
     * @param <R>  返回数据类型
     * @return pageResult封装
     */
    public static <R> PageResult<R> coverResult(Page<R> page) {
        PageResult<R> pageResult = new PageResult<>();
        pageResult.setRecords(page.getRecords());
        pageResult.setTotal(page.getTotal());
        pageResult.setSize(page.getSize());
        pageResult.setCurrent(page.getCurrent());
        return pageResult;
    }

}
